//
// Created by aaa on 2025/7/11.
//

#include<bits/stdc++.h>

using namespace std;
const int N = 1e5;

int dp[N],ww[N],vv[N];
int n,m,w,v,s;

//多重背包 二进制优化
//4 5
//1 2 3
//2 4 1
//3 4 3
//4 5 2
int main(){
    cin >> n >> m;
//    for(int i = 1;i <= n;i++) cin >> w[i] >> v[i] >> s[i];

//    for(int i = 1;i <= n;i++){
//        for(int j = m;j >= w[i];j--){
//            for(int k = 1;k <= s[i] && k * w[i] <= j;k++){
//                dp[j] = max(dp[j],dp[j - k * w[i]] + k * v[i]);
//            }
//        }
//    }
//
//    cout << dp[m];

    int num = 1;
    for(int i = 1;i <= n;i++){
        cin >> w >> v >> s;

        for(int j = 1;j <= s;j <<= 1){
            ww[num]=j*w;
            vv[num++]=j*v;
            s-=j;
        }

        if(s){
            ww[num]=s*w;
            vv[num++]=s*v;
        }
    }

    for(int i = 1;i < num;i++){
        for(int j = m;j >= ww[i];j--){
            dp[j] = max(dp[j],dp[j - ww[i]] + vv[i]);
        }
    }

    cout << dp[m];


    return 0;
}